On a plusieurs points générés aléatoirement sur un ligne. On a deux centres eux aussi définis aléatoirement qui vont être créés sur la ligne, les points les plus proches des centres respectifs vont être regroupés par paquets appelés cluster. Pour créer le nouveau centre à l’étape n+1 on fait la moyenne du placement des points. Si à l’étape n finale on a la même position des points que l’étape n finale - 1 alors le programme est fini. On obtient donc deux centres finaux obtenus par optimisation combinatoire.
Ce code ci ne place plus les points sur une ligne, mais dans un repère en 2 dimensions. Le principe reste le même : chaque point est assigné à un centre pour former des clusters (ici 3) qui vont évoluer avec les centres jusqu'à atteindre une position stable.